// all的用法, 多个异步操作进行数组形式的返回值处理，
// 当所有的异步都resolve时，可以执行then操作，
// 当其中一个或多个reject时，所有的异步都会停止调用，直接返回最早发生错误的那个结果.

const pa = new Promise((resolve, reject)=>{
    setTimeout(function(){
        console.log('pa')
        resolve('pua')
    },3000)
})

const pb = new Promise((resolve, reject)=>{
    setTimeout(function(){
        console.log('pb')
        resolve('pub')
    },4000)
})

const pc = new Promise((resolve, reject)=>{
    setTimeout(function(){
        console.log('pc')
        resolve('puc')
    },5000)
})

const pd =  new Promise((resolve, reject)=>{
    setTimeout(function(){
        console.log('pd')
        reject('pud')
    },5000)
})


Promise.all([pa, pb, pc]).then((res)=>{
    console.log('成功' + res)
})

// 3秒后 pa  4秒后pb 5秒后 pc pd 然后输出成功pa,pb,pc

Promise.all([pa, pb, pd]).then((res)=>{
    console.log('成功' + res)
}).catch(err=>{
    console.log('失败' + err)
})

// 输出失败pd